home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / talk_sou / my_libra / myaddres.uni next >
Text File  |  1992-04-20  |  4KB  |  222 lines

  1. unit MyAddressInput;
  2.  
  3. { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
  4.  
  5. interface
  6.  
  7.     uses
  8.         OOMainLoop;
  9.  
  10.     const
  11.         ai_ok = 1;
  12.         ai_cancel = 2;
  13.         ai_setdefault = 3;
  14.         ai_user = 4;
  15.         ai_machine = 5;
  16.         ai_user_item = 6;
  17.  
  18.     var
  19.         default_user, default_machine: str255;
  20.  
  21.     type
  22.         AIObject = object(DTObject)
  23.                 okon, setdefon: boolean;
  24.                 procedure Create (id: integer);
  25.                 override;
  26.                 procedure DoItem (item: integer);
  27.                 override;
  28.                 procedure DoKey (modifiers: integer; ch: char; code: integer);
  29.                 override;
  30.                 procedure DoEditMenu (item: integer);
  31.                 override;
  32.                 procedure DoActivateDeactivate (activate: boolean);
  33.                 override;
  34.                 procedure SetOK;
  35.                 procedure GetDialog;
  36.                 procedure SetDialog;
  37.                 procedure PackStringBlank (var s: str255);
  38.                 procedure PackString (var s: str255);
  39.                 procedure UnPackString (s: str255);
  40.                 function IsOKOn: boolean;
  41.                 function IsSetDefaultOn: boolean;
  42.                 procedure DoCommand (s: str255);
  43.             end;
  44.  
  45.     procedure InitAddressInput;
  46.  
  47. implementation
  48.  
  49.     uses
  50.         BaseGlobals, AppGlobals, MyTypes, MyUtils, MyTEUtils, MyPreferences, MyDialogs;
  51.  
  52.     var
  53.         first: boolean;
  54.  
  55.     procedure InitAddressInput;
  56.     begin
  57.         first := true;
  58.     end;
  59.  
  60.     procedure MyOutlineDefault (dp: dialogPtr; item: integer);
  61.         var
  62.             kind: integer;
  63.             h: handle;
  64.             r: rect;
  65.             fi: AIObject;
  66.     begin
  67.         SetPort(dp);
  68.         fi := AIObject(GetWObject(dp));
  69.         GetDItem(dp, fi.ok_item, kind, h, r);
  70.         PenSize(3, 3);
  71.         InsetRect(r, -4, -4);
  72.         if not ControlEnabled(dp, fi.ok_item) or not fi.is_active then begin
  73.             PenPat(gray);
  74.             FrameRoundRect(r, 16, 16);
  75.             PenPat(black);
  76.         end
  77.         else
  78.             FrameRoundRect(r, 16, 16);
  79.     end;
  80.  
  81.     procedure AIObject.DoActivateDeactivate (activate: boolean);
  82.     begin
  83.         inherited DoActivateDeactivate(activate);
  84.         MyOutlineDefault(window, ok_item);
  85.     end;
  86.  
  87.     procedure AIObject.SetOK;
  88.         var
  89.             nsetdefon: boolean;
  90.     begin
  91.         if okon <> IsOKOn then begin
  92.             okon := not okon;
  93.             HiliteItem(window, ai_ok, okon);
  94.             MyOutlineDefault(window, ai_user_item);
  95.         end;
  96.         if setdefon <> IsSetDefaultOn then begin
  97.             setdefon := not setdefon;
  98.             HiliteItem(window, ai_setdefault, setdefon);
  99.         end;
  100.     end;
  101.  
  102.     procedure AIObject.SetDialog;
  103.     begin
  104.         SetItemText(window, ai_user, default_user);
  105.         SelIText(window, ai_user, 0, maxInt);
  106.         SetItemText(window, ai_machine, default_machine);
  107.     end;
  108.  
  109.     procedure AIObject.GetDialog;
  110.     begin
  111.         GetItemText(window, ai_user, default_user);
  112.         GetItemText(window, ai_machine, default_machine);
  113.     end;
  114.  
  115.     procedure SetDefaultString (s: str255);
  116.     begin
  117.         SetPrefsResource('STR ', defaultStrResID, handle(NewString(s)));
  118.     end;
  119.  
  120.     procedure GetDefaultString (var s: str255);
  121.         var
  122.             h: handle;
  123.             rn: integer;
  124.     begin
  125.         rn := GetPrefsResource('STR ', defaultStrResID, h);
  126.         s := stringHandle(h)^^;
  127.         if rn <> -1 then
  128.             CloseResFile(rn);
  129.     end;
  130.  
  131.     procedure AIObject.Create (id: integer);
  132.         var
  133.             kind: integer;
  134.             h: handle;
  135.             r: rect;
  136.             s: str255;
  137.     begin
  138.         inherited Create(id);
  139.         okon := true;
  140.         setdefon := true;
  141.         ok_item := ai_ok;
  142.         cancel_item := ai_cancel;
  143.         GetDItem(window, ai_ok, kind, h, r);
  144.         InsetRect(r, -10, -10);
  145.         SetDItem(window, ai_user_item, userItem, handle(@MyOutlineDefault), r);
  146.         if first then begin
  147.             first := false;
  148.             GetDefaultString(s);
  149.             UnpackString(s);
  150.         end;
  151.         SetDialog;
  152.         SetOK;
  153.     end;
  154.  
  155.     procedure AIObject.DoItem (item: integer);
  156.         var
  157.             s: str255;
  158.     begin
  159.         case item of
  160.             ai_cancel, ai_ok, ai_setdefault:  begin
  161.                 if item <> ai_cancel then begin
  162.                     GetDialog;
  163.                     if item = ai_setdefault then begin
  164.                         PackStringBlank(s);
  165.                         SetDefaultString(s);
  166.                         PackString(s);
  167.                         if s = '?' then begin
  168.                             Destroy;
  169.                             ShowCursor;
  170.                             exit(DoItem);
  171.                         end;
  172.                     end
  173.                     else
  174.                         PackString(s);
  175.                     DoCommand(s);
  176.                 end;
  177.                 Destroy;
  178.                 ShowCursor;
  179.             end;
  180.             otherwise
  181.                 ;
  182.         end;
  183.     end;
  184.  
  185.     procedure AIObject.DoKey (modifiers: integer; ch: char; code: integer);
  186.     begin
  187.         SetOK;
  188.     end;
  189.  
  190.     procedure AIObject.DoEditMenu (item: integer);
  191.         var
  192.             modified: boolean;
  193.     begin
  194.         inherited DoEditMenu(item);
  195.         SetOK;
  196.     end;
  197.  
  198.     procedure AIObject.PackStringBlank (var s: str255);
  199.     begin
  200.     end;
  201.  
  202.     procedure AIObject.PackString (var s: str255);
  203.     begin
  204.     end;
  205.  
  206.     procedure AIObject.UnPackString (s: str255);
  207.     begin
  208.     end;
  209.  
  210.     function AIObject.IsOKOn: boolean;
  211.     begin
  212.     end;
  213.  
  214.     function AIObject.IsSetDefaultOn: boolean;
  215.     begin
  216.     end;
  217.  
  218.     procedure AIObject.DoCommand (s: str255);
  219.     begin
  220.     end;
  221.  
  222. end.